在金融数据分析和商业智能项目中,数据导出是工作流程的关键环节:
| 格式 | 扩展名 | 特点 | 适用场景 |
|---|---|---|---|
| XLS | .xls | Excel 97-2003格式,专有二进制格式 | 兼容老版本Excel |
| XLSX | .xlsx | Excel 2007+格式,基于Open XML标准 | 现代标准格式 |
| XLSB | .xlsb | 二进制格式,文件更小,加载更快 | 大数据量场景 |
| CSV | .csv | 纯文本,逗号分隔值 | 跨平台数据交换 |
Pandas主要通过 openpyxl 引擎写入XLSX文件,通过 xlsxwriter 引擎实现高级格式化。
写入Excel时,Pandas自动进行数据类型转换:
| Python类型 | Excel类型 |
|---|---|
int64 |
数值 |
float64 |
数值 |
datetime64 |
日期时间 |
bool |
逻辑值(TRUE/FALSE) |
str |
文本 |
特殊值处理:NaN → 缺失值标记,inf → #NUM! 错误或自定义表示
# ⚠️ 平台原始代码 - 请原样输入至教学平台(注释除外),平台才会判定答案正确
import numpy as np # 导入NumPy数值计算库
import pandas as pd # 导入Pandas数据分析库
import datetime as dt # 导入日期时间处理模块
data=[[dt.datetime(2020,1,1, 10, 13), 2.222, 1, True], # 定义列表data
[dt.datetime(2020,1,2), np.nan, 2, False], # 第二行数据(含缺失值NaN)
[dt.datetime(2020,1,2), np.inf, 3, True]] # 第三行数据(含无穷大inf)
df = pd.DataFrame(data=data,columns=["Dates", "Floats", "Integers", "Booleans"]) # 创建数据框df
df.index.name="index" # 设置数据框索引列的名称
# 将数据框导出至Excel文件,指定工作表名和写入参数
df.to_excel("written_with_pandas1.xlsx", sheet_name="Output",
startrow=1, startcol=1, index=True, header=True, # 设置写入Excel时的起始行列位置和索引/表头选项
na_rep="<NA>", inf_rep="<INF>") #
with pd.ExcelWriter("written_with_pandas2.xlsx") as writer: # 使用上下文管理器
# 将数据框写入Sheet1工作表的第2行第2列位置
df.to_excel(writer, sheet_name="Sheet1", startrow=1, startcol=1)
# 将数据框再次写入Sheet1工作表的第11行位置
df.to_excel(writer, sheet_name="Sheet1", startrow=10, startcol=1)
df.to_excel(writer, sheet_name="Sheet2") # 将数据框写入Excel文件
print(df) # 输出数据框数据 Dates Floats Integers Booleans
index
0 2020-01-01 10:13:00 2.222 1 True
1 2020-01-02 00:00:00 NaN 2 False
2 2020-01-02 00:00:00 inf 3 True
to_excel 关键参数详解(一)写入位置控制:
startrow=1:数据从Excel第2行开始(第1行留给报告标题等)startcol=1:数据从Excel第2列开始(第1列留给行号或其他标识)index=True:是否写入行索引header=True:是否写入列名这种灵活性允许在一个Excel文件中创建复杂的报表布局。
to_excel 关键参数详解(二)特殊值处理参数:
na_rep:控制缺失值的显示方式
'<NA>' 明确标记缺失值'NA'、'-'、'NULL'inf_rep:控制无穷大的显示方式
#NUM! 错误'<INF>' 自定义表示'Infinity'、'∞'ExcelWriter 使用Python的上下文管理器(Context Manager):
核心优势:
close() 方法ExcelWriter不会覆盖已有内容,而是从指定位置开始写入:
这允许创建复杂的报表布局,例如:
将不同类型的数据放在不同工作表:
优势:数据分区清晰、可按工作表设置权限、大数据集分表提高加载速度。
to_excel vs ExcelWriter 对比| 特性 | to_excel | ExcelWriter |
|---|---|---|
| 单工作表 | ✓ | ✓ |
| 多工作表 | ✗ | ✓ |
| 同表多次写入 | ✗ | ✓ |
| 代码复杂度 | 简单 | 稍复杂 |
| 资源管理 | 自动 | 需用with语句 |
选择建议:简单导出用 to_excel,复杂报表用 ExcelWriter。
当处理大规模金融数据时(如百万级交易记录),需注意:
| 特性 | CSV | Excel |
|---|---|---|
| 文件大小 | 小(纯文本) | 大(包含格式) |
| 读取速度 | 快 | 慢 |
| 多工作表 | ✗ | ✓ |
| 格式化支持 | ✗ | ✓ |
| 跨平台兼容性 | 极好 | 需Excel |
选择建议:数据备份/迁移 → CSV;向非技术人员展示 → Excel;大数据量 → CSV或数据库。
to_excel() 是最基础的Excel导出方法,适合单表简单导出ExcelWriter 支持多工作表、同表多次写入等高级功能na_rep 和 inf_rep 参数处理特殊值的显示startrow 和 startcol 控制写入位置,实现灵活布局[商业大数据分析与应用]